import * as qiniu from 'qiniu-js'
import { getToken } from './data'




export const uploadInit = (resultFiles, insertImgFn) => {
  getToken().then(res => {
    if (res.code == 200) {
      const token = res.uptoken;
      const domain = res.upload_qiniu_addr;
      var uplist = []
      for (var i = 0; i < resultFiles.length; i++) {
        var value = resultFiles[i];
        if (value) {
          uplist.push(upload(value, token, value.name))
        }
      }
      Promise.all(uplist).then(res => {
        upImageSuccess(res, insertImgFn, domain)
      })
    }
  })
}



function upload(file, token, key) {
  // file: File 对象，上传的文件
  // key: 文件资源名
  // token: 上传验证信息，前端通过接口请求后端获得

  // 图片上传前压缩：
  // const options = {
  //   quality: 0.92,//图片压缩质量，在图片格式为 image/jpeg 或 image/webp 的情况下生效，其他格式不会生效，可以从 0 到 1 的区间内选择图片的质量。默认值 0.92
  //   noCompressIfLarger: true ,//为 true 时如果发现压缩后图片大小比原来还大，则返回源图片（即输出的 dist 直接返回了输入的 file）；默认 false，即保证图片尺寸符合要求，但不保证压缩后的图片体积一定变小
  //   // maxWidth: 1000,
  //   // maxHeight: 618
  // }
  // qiniu.compressImage(file, options).then(data => {
  //   const observable = qiniu.upload(data.dist, key, token, putExtra, config)
  //   const subscription = observable.subscribe(observer) // 上传开始
  // })
  return new Promise((resolve, reject) => {
    const isTrue = false;

    var config = {
      useCdnDomain: true,
      disableStatisticsReport: false,
      retryCount: 6,
      region: qiniu.region.z1
    };
    var putExtra = {
      fname: "",
      params: {},
      mimeType: null
    };
    const observable = qiniu.upload(file, key, token, putExtra, config)

    // or
    const subscription = observable.subscribe((res, info) => {
    }, error, res => {
      resolve(res)

    }) // 这样传参形式也可以



    if (isTrue)
      subscription.unsubscribe() // 上传取消
  })






}

function error(err) {
  console.error(err)
}
function upImageSuccess(res, call, domain) {
  res.forEach(val => {
    var url = domain + val.key
    call(url)
  })
}